#pragma once

#include <iostream>
#include <string>

#include <boost/asio/buffer.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/read_until.hpp>
#include <boost/asio/steady_timer.hpp>
#include <boost/asio/write.hpp>
#include <boost/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/function.hpp>
#include "socket_session.h"

namespace Socket
{
class SocketInterface
{
public:
    // SocketInterface() {}
    virtual ~SocketInterface(){}

    virtual void OnConnectStatus(bool *isConnected, boost::system::error_code *ec) = 0;
    virtual void ReadCallback(std::string *str_read, boost::system::error_code *ec) = 0;
    virtual void HandleWrite(std::size_t *length, boost::system::error_code *ec) = 0;
    virtual bool WriteSome(std::string &str_write) = 0;
};
}
